www.gusucode.com > DB-Libray 操作SQLServer编程的VC++ 一例-源码程序 > DB-Libray 操作SQLServer编程的VC++ 一例-源码程序\code\PhManage\ProviderDlg.cpp

    //Download by http://www.NewXing.com
// ProviderDlg.cpp : implementation file
//

#include "stdafx.h"
#include "PhysicM.h"
#include "ProviderDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CProviderDlg dialog


CProviderDlg::CProviderDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CProviderDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CProviderDlg)
	m_ProviderDemo = _T("");
	m_ProviderJC = _T("");
	m_ProviderName = _T("");
	//}}AFX_DATA_INIT
}


void CProviderDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CProviderDlg)
	DDX_Control(pDX, IDC_PROVIDER_LIST, m_ProviderList);
	DDX_Text(pDX, IDC_PROVIDER_DEMO, m_ProviderDemo);
	DDX_Text(pDX, IDC_PROVIDER_JC, m_ProviderJC);
	DDX_Text(pDX, IDC_PROVIDER_NAME, m_ProviderName);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CProviderDlg, CDialog)
	//{{AFX_MSG_MAP(CProviderDlg)
	ON_BN_CLICKED(IDC_DELBTN, OnDelbtn)
	ON_BN_CLICKED(IDC_ADDBTN, OnAddbtn)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CProviderDlg message handlers

BOOL CProviderDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	m_ProviderList.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
	char *head[]={"序 号","供应商名称","供应商简称","备注","供应商ID"};
	int i;
	for (i=0;i<5;i++)
		m_ProviderList.DeleteColumn(0);
	for (i=0;i<5;i++)
		m_ProviderList.InsertColumn(i,head[i],LVCFMT_LEFT,(i==1) ? 150 : 100,i);
	
	ImageList=new CImageList();
	ImageList->Create(16,16,TRUE | ILC_COLOR32,2,0);
	ImageList->Add(AfxGetApp()->LoadIcon(IDI_ICONUSER));
	ImageList->Add(AfxGetApp()->LoadIcon(IDR_MENUVIEW_TMPL));
	m_ProviderList.SetImageList(ImageList,LVSIL_SMALL);// LVSIL_NORMAL);
	ShowInfo();	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
void CProviderDlg::ShowInfo()
{
		m_ProviderList.DeleteAllItems();
	DBLibrary DB(GetDB());
//	DB.init();
	try{
		iCount=1;
		DB.Open("SELECT provider_id,provider_name ,provider_jc,demo FROM provider order by provider_id");
		char name[40],jc[40],demo[50],index[4];
		
		memset(name,0,40);
		memset(jc,0,40);
		memset(demo,0,50);
		memset(index,0,4);		
		while (!DB.isEof())
		{
		   DB.GetValue("provider_name",name);
		   DB.GetValue("provider_jc",jc);
		   DB.GetValue("demo",demo);
		   sprintf(index,"%03d",iCount);
		   m_ProviderList.InsertItem(iCount-1,index,0);
		   m_ProviderList.SetItemText(iCount-1,1,(LPCTSTR)name);
		   m_ProviderList.SetItemText(iCount-1,2,(LPCTSTR)jc);
		   m_ProviderList.SetItemText(iCount-1,3,(LPCTSTR)demo);
		   sprintf(index,"%03d",DB.GetValue("provider_id"));
		   m_ProviderList.SetItemText(iCount-1,4,(LPCTSTR)index);
		   iCount++;
		   DB.Next();
		}
	}
	catch (DBErr &err)
	{
		char *estr;
		int ecode;
		err.GetLastErr(ecode,&estr);
		ShowErr(estr,ecode);
	}
	catch(...)
	{
		ShowErr("unknow error!",-1);
	}
}
CPhysicMApp *CProviderDlg::GetApp()
{
	return (CPhysicMApp *)AfxGetApp();
}
CDBSession CProviderDlg::GetDB()
{
	return ((CPhysicMApp *)AfxGetApp())->DBSession;
}
void CProviderDlg::ShowErr(char *str,int code)
{
	if(GetApp()->pMainFrm==NULL)
	{
		MessageBox(str,"错误提示",MB_OK | MB_ICONERROR);
		return;
	}
	GetApp()->pMainFrm->AddErr("%s(errcode:%d)",str,code);
}

BOOL CProviderDlg::DestroyWindow() 
{
	// TODO: Add your specialized code here and/or call the base class
	if (ImageList) delete ImageList;
	return CDialog::DestroyWindow();
}

void CProviderDlg::OnDelbtn() 
{
	GetApp()->Delete("provider","provider_id",&m_ProviderList,4);
}

void CProviderDlg::OnAddbtn() 
{
 
   UpdateData();
   m_ProviderName.TrimRight();
   m_ProviderName.TrimLeft();
   if (m_ProviderName.IsEmpty()) {
	   ShowErr("供应商名称不能为空",-1);
	   return;
   }
   AddInfo(m_ProviderName,m_ProviderJC,m_ProviderDemo);	
}
void CProviderDlg::AddInfo(CString m_ProviderName,CString m_ProviderJC,CString m_ProviderDemo)
{
	DBLibrary DB(GetDB());
	int max_id=0;
	try{
		DB.Open("select ident_current('provider') did "
			" from information_schema.tables where table_name='provider' ");
		double id=0;
		DB.GetValue("did",&id);
		max_id=(int)id +1;
		DB.ExecSQL("INSERT INTO provider (provider_name,provider_jc,demo) "
			"VALUES('%s','%s','%s')",m_ProviderName,m_ProviderJC,m_ProviderDemo);
		GetApp()->pMainFrm->AddLog("新增供应商:%s",m_ProviderName);
		char no[4];
		int icount=m_ProviderList.GetItemCount();
		memset(no,0,4);
		sprintf(no,"%03d",icount+1);
		m_ProviderList.InsertItem(m_ProviderList.GetItemCount(),no,0);
		m_ProviderList.SetItemText(icount,1,m_ProviderName);
		m_ProviderList.SetItemText(icount,2,m_ProviderJC);
		m_ProviderList.SetItemText(icount,3,m_ProviderDemo);
		sprintf(no,"%03d",max_id);
		m_ProviderList.SetItemText(icount,4,no);
	}
	catch (DBErr &err)
	{
		char *estr;
		int ecode;
		err.GetLastErr(ecode,&estr);
		ShowErr(estr,ecode);
	}
	catch(...)
	{
		ShowErr("unknow error!",-1);
	}
}

void CProviderDlg::OnOK() 
{
	// TODO: Add extra validation here
	
//	CDialog::OnOK();
}